package com.hzsparrow.ai.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzsparrow.ai.entity.Document;

import java.util.List;
import java.util.Map;

/**
 * 文档服务接口
 */
public interface DocumentService extends IService<Document> {

    /**
     * 保存文档
     *
     * @param document 文档对象
     * @return 保存后的文档对象
     */
    Document saveDocument(Document document);

    /**
     * 获取知识库中的文档列表
     *
     * @param knowledgeBaseId 知识库ID
     * @return 文档列表
     */
    List<Document> getDocumentsByKnowledgeBaseId(Long knowledgeBaseId);

    /**
     * 根据ID获取文档
     *
     * @param id 文档ID
     * @return 文档对象
     */
    Document getDocumentById(Long id);

    /**
     * 更新文档
     *
     * @param document 文档对象
     * @return 更新后的文档对象
     */
    Document updateDocument(Document document);

    /**
     * 删除文档
     *
     * @param id 文档ID
     * @return 操作结果
     */
    boolean deleteDocument(Long id);

    /**
     * 分页获取文档列表
     *
     * @param page 页码
     * @param size 每页大小
     * @param knowledgeBaseId 知识库ID（可选）
     * @return 分页文档列表
     */
    Page<Document> listDocuments(int page, int size, Long knowledgeBaseId);
    
    /**
     * 添加文档
     *
     * @param content 文档内容
     * @param knowledgeBaseId 知识库ID
     * @param title 文档标题
     * @return 操作结果描述
     */
    String addDocument(String content, Long knowledgeBaseId, String title);
    
    /**
     * 根据文件信息创建文档
     *
     * @param fileInfo 文件信息，包含文件名、文件路径、解析内容等
     * @param knowledgeBaseId 知识库ID
     * @param userId 创建用户ID
     * @return 创建的文档对象
     */
    Document createDocumentFromFile(Map<String, Object> fileInfo, Long knowledgeBaseId, Long userId);
} 